<?php
/**
 * Inter组件之Session存储器：Demo示例(2)
 * 本Demo用于示例如何编写一个Session存储器（和已有框架集合类别）
 *
 * @author Horse Luke<horseluke@126.com>
 * @copyright Horse Luke, 2010
 * @license the Apache License, Version 2.0 (the "License"). {@link http://www.apache.org/licenses/LICENSE-2.0}
 * @version $Id: Demo2.php 158 2011-02-04 16:14:12Z horseluke@126.com $
 * @package Inter_Session
 * @subpackage Inter_Session_Storage
 */
class Inter_Session_Storage_Demo2 extends Inter_Session_Storage_Abstract{
    
    /**
     * 构造函数
     */
    public function __construct(){
        //和已有框架集合时，可直接在此初始化资源，以下为获取一个db单例（假设存在Inter_Session_Storage_Demo2::db属性）
        //$this->db = Inter_Db::getInstance();
    }
    
    /**
     * 打开一个session
     * @param string $save_path
     * @param string $session_name
     * @return bool
     */
    public function open($save_path, $session_name){
        //和已有框架集合时，可无需进行open操作（因为已经在__construct中完成初始化了），直接返回true
        return true;
    }
    
    /**
     * 关闭一个session
     * @return bool
     * 
     */
    public function close(){
        //[CODE INSERT - IF NEEDED OR MUST DO SO]如果该操作器所操作的对象本身没有gc功能（比如数据库），则需要开启下面的代码；
        //否则，则可不需要以下的代码（比如Memcache）
        //和已有框架集合时，可直接写死配置值
        /*
        if(rand(1, 1000) <= 1){
            $this->gc(1440);
        }
        */
        return true;
    }
    
    /**
     * 读取一个session
     * @param string $id session id
     * @return string  session数据。按原样传出字符串
     */
    public function read($id){
        //[CODE INSERT - MUST DO SO]在这里编写你要返回session数据的代码
        $sess_data = '';
        return $sess_data;
    }
    
    /**
     * 写入一个session
     * @param string $id session id
     * @param string $sess_data session数据。为兼容php自身行为，请保证传入的是字符串
     */
    public function write($id, $sess_data){
        //[CODE INSERT - MUST DO SO]在这里编写你要写入session数据的代码
        
    }
    
    /**
     * 销毁一个session
     * @param string $id session id
     */
    public function destroy($id){
        //[CODE INSERT - MUST DO SO]在这里编写你要销毁指定session id的数据的代码
    }
    
    /**
     * session回收
     * @param integer $maxlifetime session存活时间
     */
    public function gc($maxlifetime){
        //[CODE INSERT - MUST DO SO]在这里编写你要执行垃圾回收session的代码
    }
    
}